﻿using System;
using System.Collections.Generic;
using System.Linq;

namespace CRM.Database.Model
{
 public    class BonusesStatusesCollection:AbstractCollection
    {

     public List<BonusStatuses> BonusStatusesList
     {
         get { return Entities.BonusStatuses.ToList(); }
     } 


     #region Overrides of AbstractCollection

     /// <summary>
     /// Получение списка элементов
     /// </summary>
     /// <returns>Список элементов</returns>
     public override List<object> GetList()
     {
         return new List<object>(BonusStatusesList);
     }

     /// <summary>
     /// Получение типа текущего элемента
     /// </summary>
     /// <returns></returns>
     protected override Type GetItemType()
     {
         return typeof (BonusStatuses);
     }

     /// <summary>
     /// Получение статического списка для хранения объектов
     /// </summary>
     /// <returns></returns>
     public override object GetStaticCollection()
     {
         throw new NotImplementedException();
     }

     /// <summary>
     /// Получение элемента из коллекции по идентификатору
     /// </summary>
     /// <param name="itemId">Идентификатор</param>
     /// <returns>Элемент</returns>
     public override object GetItemById(int itemId)
     {
         return  Entities.BonusStatuses.Find(itemId);
     }

     /// <summary>
     /// Обнуление статической коллекции
     /// </summary>
     protected override void SetStaticListToNULL()
     {
         throw new NotImplementedException();
     }

     #endregion


     /// <summary>
     /// Обновление элемента в коллекции
     /// </summary>
     /// <param name="item">Новый элемент</param>
     /// <param name="userLogin">Логин пользователя, который делает изменения</param>
     /// <returns>Результат операции</returns>
     public new bool Update(object item, string userLogin)
     {
         var newObject = (BonusStatuses)item;
         if (newObject == null)
             return false;


         var object4Update = GetItemByIdFromDatabase(newObject.GetKeyValue()) as BonusStatuses;
         if (object4Update == null)
             return false;

         if (!string.IsNullOrEmpty(newObject.NameEn))
             object4Update.NameEn = newObject.NameEn;

         if (!string.IsNullOrEmpty(newObject.NameRu))
             object4Update.NameRu = newObject.NameRu;


         object4Update.IsActive = newObject.IsActive;


         return base.Update(item, userLogin);
     }


    }
}
